home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / lpmud312.tar / lpmud312 / util / fundesc.c next >
C/C++ Source or Header  |  1991-07-27  |  2KB  |  126 lines

  1. #include <stdio.h>
  2. #ifndef M_UNIX
  3. #include <strings.h>
  4. #endif
  5.  
  6. /*
  7.   Process stdin, dir to write doc files in argv[1]
  8.   argv[2] (optional) is the name of the processed file.
  9.   
  10. */
  11.  
  12. char buf[2000];
  13. char *start = "* Description:";
  14. char *stend = "{";
  15. char *dfile;
  16. int line_count;
  17.  
  18. /* Search string in backwards
  19. */
  20. char *backstrchr (apa, ch)
  21.     char *apa;
  22.     char ch;
  23. {
  24.   char *sp;
  25.  
  26.   sp = apa;
  27.   while (*sp) {
  28.     if (*sp==ch) return sp;
  29.     sp--;
  30.   }
  31.   return 0;
  32. }
  33.  
  34. void
  35. make_desc(fdesc)
  36.      char *fdesc;
  37.  
  38. {  
  39.   char *tmp, *tmp2, *tmp3, *tmp4, fname[100];
  40.   int n,il;
  41.   FILE *f;
  42.  
  43.   tmp = (char *) strchr(fdesc,'p');
  44.   while (tmp)  {
  45.     if (strncmp(tmp,"public",6) == 0) break;
  46.     tmp = (char *) strchr(&tmp[1],'p');
  47.   }
  48.   if (!tmp) return;
  49.   *tmp = 0; tmp+=6;
  50.   tmp2 = (char*) strchr(tmp,'('); if (!tmp2) return;
  51.   tmp3 = (char*) backstrchr(tmp2,' ');
  52.   tmp4 = (char *) backstrchr(tmp2,'\n');
  53.   if (!tmp3) {
  54.       tmp3 = tmp4;
  55.       if (!tmp3) return;
  56.   }
  57.   else if ((tmp4) && (tmp3<tmp4))
  58.       tmp3 = tmp4;
  59.   *tmp2 = 0; strcpy(fname,&tmp3[1]);  *tmp2='(';
  60.  
  61.   if (f=fopen(fname,"a")) 
  62.       if (dfile)
  63.       fprintf(f,"%s\n/*\n * Source: %s\n * Line: %d\n *\n * Description:%s\n\n",
  64.           tmp,dfile,line_count-1,fdesc);
  65.       else
  66.       fprintf(f,"%s\n/*\n * Line: %d\n *\n * Description:%s\n\n",
  67.           tmp,line_count-1,fdesc);
  68.   fclose(f);
  69. }
  70.  
  71.  
  72. int
  73. main(argc, argv)
  74.      int argc;
  75.      char **argv;
  76. {
  77.     int pflag, ch;
  78.     char *tmp, *bpek;
  79.     
  80.     if (argc<2) {
  81.     perror("To few args");
  82.     exit(1);
  83.     }
  84.  
  85.     if (chdir(argv[1])) {
  86.     perror("Can't change to doc dir\n");
  87.     exit(1);
  88.     }
  89.  
  90.     if (argc > 2) 
  91.     dfile = argv[2];
  92.     else
  93.     dfile = 0;
  94.     
  95.     pflag = 0; tmp = start; bpek = buf; line_count = 1;
  96.     
  97.     while ((ch=getchar()) != EOF) {
  98.  
  99.     if (ch == '\n')
  100.         line_count ++;
  101.  
  102.     if (pflag) {
  103.         if (ch == *tmp) {
  104.         tmp++; if (*tmp == 0) {
  105.             pflag = 0;
  106.             tmp = start;
  107.             *bpek = 0;
  108.             make_desc(buf);
  109.             bpek = buf;
  110.         }
  111.         }
  112.         else {
  113.         tmp = stend;
  114.         *bpek = ch; bpek++;
  115.         }
  116.     }
  117.     else if (ch == *tmp) {
  118.         tmp++; if (*tmp == 0) {
  119.         pflag = 1; tmp = stend;
  120.         }
  121.     }
  122.     else tmp = start;
  123.     }
  124. }
  125.  
  126.